/**
 * 页面级认证检查
 * 在需要登录的页面上自动验证用户登录状态
 */

(function() {
    'use strict';
    
    // 定义需要登录的页面路径
    const PROTECTED_PATHS = [
        '/chat',
        '/job-search',
        '/profile'
    ];
    
    // 定义开放访问的页面路径
    const PUBLIC_PATHS = [
        '/',
        '/index',
        '/login', 
        '/register'
    ];
    
    /**
     * 检查当前页面是否需要登录
     */
    function isProtectedPage() {
        const currentPath = window.location.pathname;
        
        // 检查是否在开放页面列表中
        if (PUBLIC_PATHS.includes(currentPath)) {
            return false;
        }
        
        // 检查是否在保护页面列表中
        if (PROTECTED_PATHS.some(path => currentPath.startsWith(path))) {
            return true;
        }
        
        // 默认情况下，除了明确标记为公开的页面，其他都需要登录
        return true;
    }
    
    /**
     * 执行页面级认证检查
     */
    async function performPageAuthCheck() {
        // 如果是开放页面，直接返回
        if (!isProtectedPage()) {
            return;
        }
        

        
        // 等待authManager初始化
        if (!window.authManager) {
            // 等待一段时间让authManager加载
            await new Promise(resolve => setTimeout(resolve, 100));
        }
        
        if (!window.authManager) {
            console.error('PageAuth: AuthManager未加载，重定向到登录页面');
            redirectToLogin();
            return;
        }
        
        // 检查本地存储中是否有token
        const userInfo = window.authManager.getCurrentUser();
        if (!userInfo.isLoggedIn) {
            redirectToLogin();
            return;
        }
        
        // 验证token有效性
        try {
            const isValid = await window.authManager.validateToken();
            if (!isValid) {
                redirectToLogin();
                return;
            }
            

        } catch (error) {
            console.error('PageAuth: Token验证出错，重定向到登录页面', error);
            redirectToLogin();
        }
    }
    
    /**
     * 重定向到登录页面
     */
    function redirectToLogin() {
        const currentUrl = window.location.href;
        const loginUrl = `/login?redirect=${encodeURIComponent(currentUrl)}`;
        
        window.location.href = loginUrl;
    }
    
    /**
     * 页面加载完成后执行认证检查
     */
    function initPageAuth() {
        // 立即检查（同步检查本地token）
        if (isProtectedPage() && window.authManager) {
            const userInfo = window.authManager.getCurrentUser();
            if (!userInfo.isLoggedIn) {
                redirectToLogin();
                return;
            }
        }
        
        // 异步验证token有效性
        setTimeout(performPageAuthCheck, 100);
    }
    
    // 页面加载时自动执行检查
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', initPageAuth);
    } else {
        initPageAuth();
    }
    
    // 暴露给全局使用
    window.pageAuth = {
        isProtectedPage,
        performPageAuthCheck,
        redirectToLogin
    };
    
})(); 